#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QKeyEvent>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:

    void on_clearBtn_clicked();

    void on_clearAllBtn_clicked();

    void on_GetValueBtn_clicked();

    void digitClicked();

    void operatorClicked();

    void on_signBtn_clicked();

    void on_pointBtn_clicked();

private:
    Ui::Widget *ui;

private:
    //bool Calculate(double operand, QString pendingoperator);//计算逻辑
    QString inToPost(QString infix);
    double Compute(QString s);
    void AbortOperation();  //终止运算方法（当操作数与运算不合法时执行），清除所有数据，并弹窗报错
    void ConnectSlots();  //绑定UI操作事件到后台
    void SetShortCutKeys();
    QString SaveOperatorSign;  //保存的下次运算符
    double result;  //当前计算器保存的计算结果
    bool waitingForOperand;  //是否需要等待下一个操作数（当已经填入新运算符是为true）
    QString errorInfo;
protected:
    void keyPressEvent(QKeyEvent* event);

};
#endif // WIDGET_H
